﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Security.Permissions;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Data.OleDb;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.Configuration;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class derechohabienteController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /derechohabiente/
        public ActionResult IndexById(int id)
        {
            var query = entidades.DERECHOHABIENTEs.Where(x=>x.IdDerechoHabiente == id);

            var dh = (from x in query.ToList()
                      join v in entidades.VINCULOFAMILIARs on x.IdVinculo equals v.IdVinculo
                      join n in entidades.NACIONALIDADs on x.IdNacionalidad equals n.IdNacionalidad
                      join tdi in entidades.TIPODOCUMENTOIDENTIDADs on x.IdTipoDI equals tdi.IdTipoDI
                      join avf in entidades.ACREDITAVINCULOFAMILIARs on x.idacreditavinculofamiliar equals avf.idacreditavinculofamiliar
                      select new { 
                      NomDerechoHabiente = x.Nombre + " "+x.ApePaterno+" "+x.ApeMaterno,
                      ApePaterno = x.ApePaterno,
                      ApeMaterno = x.ApeMaterno,
                      Nombre = x.Nombre,
                      NomVinculoFamiliar = v.Descripcion,
                      IdVinculo = v.IdVinculo,
                      EstadoCivil = x.EstadoCivil,
                      FechaNacimiento = String.Format("{0:d}", x.FechaNacimiento),
                      Discapacidad = x.Discapacidad,//(x.Discapacidad == true ? "Si":"No"),
                      Estudiando = x.Estudiando,//(x.Estudiando == true ? "Si" : "No"),
                      //NomEstadoEsSalud = 
                      IdEstadoEsSalud = x.Estado,//(x.Estado == 0 ? "Baja" : x.Estado == 1 ? "RE":"Tres"),
                      FechaConvivencia = String.Format("{0:d}", x.FechaConvivencia),
                      IdNacionalidad = x.IdNacionalidad,
                      Nacionalidad =n.Nacionalidad1,
                      IdTipoDI = x.IdTipoDI,
                      Descripcion = tdi.Descripcion,
                      NroDI = x.NroDI,
                      idacreditavinculofamiliar = x.idacreditavinculofamiliar,
                      NomAcreditaVinculofamiliar = avf.descripcion,
                      nrodocumento = x.nrodocumento,
                      FechaAlta = String.Format("{0:d}", x.FechaAlta),
                      FechaBaja = String.Format("{0:d}", x.FechaBaja),
                      IdPersonal = x.IdPersonal
                      });

            return Json(new { Data = dh, total = dh.Count() },JsonRequestBehavior.AllowGet);
        }

        public ActionResult Index(int id)
        {
            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);

            string nrocontrato = Convert.ToString(Request.QueryString["query"]);
            var query = entidades.RHListaDerechoHabientePorPersona(id).ToList();
      //      var query = entidades.DERECHOHABIENTEs
      //          .Where(ca => ca.IdPersonal == id);

            /*if (!String.IsNullOrEmpty(nrocontrato))
            {
                query = query.Where(ca => ca.nro.ToUpper().Contains(nrocontrato.ToUpper()));
            }*/

            var result = (from p in query.ToList()
                          select new
                          {
                              Id = p.IdDerechoHabiente,
                              Persona = p.Persona,
                              Estadocivil = p.EstadoCivil,
                              Fechanacimiento = string.Format("{0:d}", p.FechaNacimiento),
                              Discapacidad = p.Discapacidad == true ? "SI" : "NO",
                              Estudiando = p.Estudiando == true ? "SI" : "NO",
                              Estado = p.Estado,
                              Fechaconvivencia = string.Format("{0:d}", p.FechaConvivencia),
                              Nacionalidad = p.Nacionalidad,
                              Tipodi = p.Tipodi,
                              Nrodi = p.Nrodi,
                              Nrodv = p.Nrodv,
                              Vinculo = p.Vinculo,
                              Docvinculo = (p == null ? String.Empty : p.DocVinculo),
                          }).ToList();
            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);




      //      var query2 = entidades.EJERCICIOs.Single(cc => cc.EstadoP == true);
       //     var query3 = entidades.TIPOTRABAJADORs.Single(cc => cc.Defecto == true);

            // DateTime fechita = new DateTime(query2.Anio - 1, 12, 31);
            //var query = entidades.RHListaProvisionVacaciones(query2.IdEjercicio, query3.IdTipoTrabajador).ToList();
            //opts.fields = ['IdPeriodoLaboral','IdPersonal' ,'Personal', 'FechaIngreso','DiasCal','RecordVac','DiasGozados','DiasPendientes','Area','CC','Sueldo','Monto'];

            //opts.fields = ['Personal', 'FechaIngreso','DiasCalculados','RecordVacaciones','DiasGozados','DiasPendientes','Nombre','CentroCostos','sueldo','Monto','IdPeriodoLaboral','IdPersonal'];

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
            //return Json(new { text = ".", children = result }, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /derechohabiente/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /derechohabiente/Create

        public ActionResult Create()
        {
            var query = entidades.VINCULOFAMILIARs.Select(vf => new { vf.IdVinculo, vf.Descripcion }).OrderBy(vf => vf.Descripcion);
            ViewData["IdVinculo"] = new SelectList(query.AsEnumerable(), "IdVinculo", "Descripcion");

            List<SelectListItem> siono = new List<SelectListItem>();
            siono.Add(new SelectListItem { Text = "NO", Value = "false" });
            siono.Add(new SelectListItem { Text = "SI", Value = "true" });

            ViewData["Discapacidad"] = new SelectList(siono.AsEnumerable(), "value", "text");
            ViewData["Estudiando"] = new SelectList(siono.AsEnumerable(), "value", "text");

            List<SelectListItem> EstadoCivil = new List<SelectListItem>();
            EstadoCivil.Add(new SelectListItem { Text = "SOLTERO(A)", Value = "SOLTERO(A)" });
            EstadoCivil.Add(new SelectListItem { Text = "CASADO(A)", Value = "CASADO(A)" });
            EstadoCivil.Add(new SelectListItem { Text = "CONVIVIENTE", Value = "CONVIVIENTE" });

            ViewData["EstadoCivil"] = new SelectList(EstadoCivil.AsEnumerable(), "value", "text");

            var query1 = entidades.NACIONALIDADs.Select(n => new { n.IdNacionalidad, n.Nacionalidad1 }).OrderBy(n => n.Nacionalidad1);
            ViewData["IdNacionalidad"] = new SelectList(query1.AsEnumerable(), "IdNacionalidad", "Nacionalidad1", 10);

            List<SelectListItem> Estado = new List<SelectListItem>();
            Estado.Add(new SelectListItem { Text = "ACTIVO EN ESSALUD", Value = "1" });
            Estado.Add(new SelectListItem { Text = "NO REGISTRADO EN ESSALUD", Value = "2" });
            ViewData["Estado"] = new SelectList(Estado.AsEnumerable(), "value", "text",2);

            var query2 = entidades.TIPODOCUMENTOIDENTIDADs.Select(tdi => new { tdi.IdTipoDI, tdi.Descripcion }).OrderBy(tdi => tdi.IdTipoDI);
            ViewData["IdTipoDI"] = new SelectList(query2.AsEnumerable(), "IdTipoDI", "Descripcion", 1);

            var query3 = entidades.ACREDITAVINCULOFAMILIARs.Select(avf => new { avf.idacreditavinculofamiliar, avf.descripcion }).OrderBy(avf => avf.idacreditavinculofamiliar);
            ViewData["idacreditavinculofamiliar"] = new SelectList(query3.AsEnumerable(), "idacreditavinculofamiliar", "descripcion", 1);

            return View();
        } 

        //
        // POST: /derechohabiente/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection, DERECHOHABIENTE DERECHOHABIENTE,HttpPostedFileBase adjunto)
        {
            //var query = entidades.VINCULOFAMILIARs.Select(vf => new { vf.IdVinculo, vf.Descripcion }).OrderBy(vf => vf.Descripcion);
            //ViewData["IdVinculo"] = new SelectList(query.AsEnumerable(), "IdVinculo", "Descripcion");

            //List<SelectListItem> siono = new List<SelectListItem>();
            //siono.Add(new SelectListItem { Text = "NO", Value = "false" });
            //siono.Add(new SelectListItem { Text = "SI", Value = "true" });

            //ViewData["Discapacidad"] = new SelectList(siono.AsEnumerable(), "value", "text");
            //ViewData["Estudiando"] = new SelectList(siono.AsEnumerable(), "value", "text");

            //List<SelectListItem> EstadoCivil = new List<SelectListItem>();
            //EstadoCivil.Add(new SelectListItem { Text = "SOLTERO(A)", Value = "SOLTERO(A)" });
            //EstadoCivil.Add(new SelectListItem { Text = "CASADO(A)", Value = "CASADO(A)" });
            //EstadoCivil.Add(new SelectListItem { Text = "CONVIVIENTE", Value = "CONVIVIENTE" });

            //ViewData["EstadoCivil"] = new SelectList(EstadoCivil.AsEnumerable(), "value", "text");

            //var query1 = entidades.NACIONALIDADs.Select(n => new { n.IdNacionalidad, n.Nacionalidad1 }).OrderBy(n => n.Nacionalidad1);
            //ViewData["IdNacionalidad"] = new SelectList(query1.AsEnumerable(), "IdNacionalidad", "Nacionalidad1");

            //List<SelectListItem> Estado = new List<SelectListItem>();
            //Estado.Add(new SelectListItem { Text = "ACTIVO EN ESSALUD", Value = "1" });
            //Estado.Add(new SelectListItem { Text = "NO REGISTRADO EN ESSALUD", Value = "2" });
            //ViewData["Estado"] = new SelectList(Estado.AsEnumerable(), "value", "text");

            //var query2 = entidades.TIPODOCUMENTOIDENTIDADs.Select(tdi => new { tdi.IdTipoDI, tdi.Descripcion }).OrderBy(tdi => tdi.IdTipoDI);
            //ViewData["IdTipoDI"] = new SelectList(query2.AsEnumerable(), "IdTipoDI", "Descripcion");

            //var query3 = entidades.ACREDITAVINCULOFAMILIARs.Select(avf => new { avf.idacreditavinculofamiliar, avf.descripcion }).OrderBy(avf => avf.idacreditavinculofamiliar);
            //ViewData["idacreditavinculofamiliar"] = new SelectList(query3.AsEnumerable(), "idacreditavinculofamiliar", "descripcion");
            string strResponse = null;
            try
            {
                // TODO: Add insert logic here
                //if (ModelState.IsValid)
                //{

                string discapacidad = Convert.ToString(Request.Params["Discapacidad"]);
                string estudiando = Convert.ToString(Request.Params["Estudiando"]);

                bool bdisc = false;
                bool bestu = false;
                

                    var cderechohabiente = new DERECHOHABIENTE();
                    //ccontrato.tipo = 1;
                    TryUpdateModel(cderechohabiente, collection.ToValueProvider());

                    try
                    {
                        bdisc = Convert.ToBoolean(discapacidad);
                        bestu = Convert.ToBoolean(estudiando);

                        cderechohabiente.Discapacidad = bdisc;
                        cderechohabiente.Estudiando = bestu;
                    }
                    catch
                    {

                    }

                    cderechohabiente.FechaAlta = DateTime.Now;
                    entidades.AddToDERECHOHABIENTEs(cderechohabiente);
                    entidades.SaveChanges();

                    entidades.RLLENAREJERCICIOMESPERSONA(cderechohabiente.IdPersonal, DateTime.Now.Month);
                    entidades.RCALCULORETENCION(cderechohabiente.IdPersonal);
                    var grupos = "";
                    if (adjunto != null)
                    {
                        grupos = adjunto.FileName.ToString();
                        if (grupos.EndsWith(".pdf") || grupos.EndsWith(".PDF"))
                        {
                            adjunto.SaveAs(Server.MapPath("~/Content/RRHH/Vinculofamiliar/Alta/") + Convert.ToString(cderechohabiente.IdDerechoHabiente) + ".pdf");
                        }
                    }

                    strResponse = "{success: true,msg:'Registro Creado Correctamente'}";
                    return Content(strResponse);
                //}
                //else
                //{
                //    strResponse = "{success: false,msg:'Error'}";
                //    return Content(strResponse);
                //}
            }
            catch
            {
                strResponse = "{success: false,msg:'Error'}";
                return Content(strResponse);
            }
        }
        
        //
        // GET: /derechohabiente/Edit/5
 
        public ActionResult Edit(int id)
        {
            var ederechoh = entidades.DERECHOHABIENTEs.Single(p => p.IdDerechoHabiente == id);

            var query = entidades.VINCULOFAMILIARs.Select(vf => new { vf.IdVinculo, vf.Descripcion }).OrderBy(vf => vf.Descripcion);
            ViewData["IdVinculo"] = new SelectList(query.AsEnumerable(), "IdVinculo", "Descripcion", ederechoh.IdVinculo);

            List<SelectListItem> siono = new List<SelectListItem>();
            siono.Add(new SelectListItem { Text = "NO", Value = "false" });
            siono.Add(new SelectListItem { Text = "SI", Value = "true" });

            ViewData["Discapacidad"] = new SelectList(siono.AsEnumerable(), "value", "text", ederechoh.Discapacidad);
            ViewData["Estudiando"] = new SelectList(siono.AsEnumerable(), "value", "text", ederechoh.Estudiando);

            List<SelectListItem> EstadoCivil = new List<SelectListItem>();
            EstadoCivil.Add(new SelectListItem { Text = "SOLTERO(A)", Value = "SOLTERO(A)" });
            EstadoCivil.Add(new SelectListItem { Text = "CASADO(A)", Value = "CASADO(A)" });
            EstadoCivil.Add(new SelectListItem { Text = "CONVIVIENTE", Value = "CONVIVIENTE" });

            ViewData["EstadoCivil"] = new SelectList(EstadoCivil.AsEnumerable(), "value", "text", ederechoh.EstadoCivil);

            var query1 = entidades.NACIONALIDADs.Select(n => new { n.IdNacionalidad, n.Nacionalidad1 }).OrderBy(n => n.Nacionalidad1);
            ViewData["IdNacionalidad"] = new SelectList(query1.AsEnumerable(), "IdNacionalidad", "Nacionalidad1", ederechoh.IdNacionalidad);

            List<SelectListItem> Estado = new List<SelectListItem>();
            Estado.Add(new SelectListItem { Text = "ACTIVO EN ESSALUD", Value = "1" });
            Estado.Add(new SelectListItem { Text = "NO REGISTRADO EN ESSALUD", Value = "2" });
            ViewData["Estado"] = new SelectList(Estado.AsEnumerable(), "value", "text", ederechoh.Estado);

            var query2 = entidades.TIPODOCUMENTOIDENTIDADs.Select(tdi => new { tdi.IdTipoDI, tdi.Descripcion }).OrderBy(tdi => tdi.IdTipoDI);
            ViewData["IdTipoDI"] = new SelectList(query2.AsEnumerable(), "IdTipoDI", "Descripcion", ederechoh.IdTipoDI);

            var query3 = entidades.ACREDITAVINCULOFAMILIARs.Select(avf => new { avf.idacreditavinculofamiliar, avf.descripcion }).OrderBy(avf => avf.idacreditavinculofamiliar);
            ViewData["idacreditavinculofamiliar"] = new SelectList(query3.AsEnumerable(), "idacreditavinculofamiliar", "descripcion", ederechoh.idacreditavinculofamiliar);

            return View(ederechoh);
        }

        //
        // POST: /derechohabiente/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection, DERECHOHABIENTE DERECHOHABIENTE, HttpPostedFileBase adjunto)
        {
            var ederechoh = entidades.DERECHOHABIENTEs.Single(p => p.IdDerechoHabiente == id);

            //var query = entidades.VINCULOFAMILIARs.Select(vf => new { vf.IdVinculo, vf.Descripcion }).OrderBy(vf => vf.Descripcion);
            //ViewData["IdVinculo"] = new SelectList(query.AsEnumerable(), "IdVinculo", "Descripcion", ederechoh.IdVinculo);

            //List<SelectListItem> siono = new List<SelectListItem>();
            //siono.Add(new SelectListItem { Text = "NO", Value = "false" });
            //siono.Add(new SelectListItem { Text = "SI", Value = "true" });

            //ViewData["Discapacidad"] = new SelectList(siono.AsEnumerable(), "value", "text", ederechoh.Discapacidad);
            //ViewData["Estudiando"] = new SelectList(siono.AsEnumerable(), "value", "text", ederechoh.Estudiando);

            //List<SelectListItem> EstadoCivil = new List<SelectListItem>();
            //EstadoCivil.Add(new SelectListItem { Text = "SOLTERO(A)", Value = "SOLTERO(A)" });
            //EstadoCivil.Add(new SelectListItem { Text = "CASADO(A)", Value = "CASADO(A)" });
            //EstadoCivil.Add(new SelectListItem { Text = "CONVIVIENTE", Value = "CONVIVIENTE" });

            //ViewData["EstadoCivil"] = new SelectList(EstadoCivil.AsEnumerable(), "value", "text", ederechoh.EstadoCivil);

            //var query1 = entidades.NACIONALIDADs.Select(n => new { n.IdNacionalidad, n.Nacionalidad1 }).OrderBy(n => n.Nacionalidad1);
            //ViewData["IdNacionalidad"] = new SelectList(query1.AsEnumerable(), "IdNacionalidad", "Nacionalidad1", ederechoh.IdNacionalidad);

            //List<SelectListItem> Estado = new List<SelectListItem>();
            //Estado.Add(new SelectListItem { Text = "ACTIVO EN ESSALUD", Value = "1" });
            //Estado.Add(new SelectListItem { Text = "NO REGISTRADO EN ESSALUD", Value = "2" });
            //ViewData["Estado"] = new SelectList(Estado.AsEnumerable(), "value", "text", ederechoh.Estado);

            //var query2 = entidades.TIPODOCUMENTOIDENTIDADs.Select(tdi => new { tdi.IdTipoDI, tdi.Descripcion }).OrderBy(tdi => tdi.IdTipoDI);
            //ViewData["IdTipoDI"] = new SelectList(query2.AsEnumerable(), "IdTipoDI", "Descripcion", ederechoh.IdTipoDI);

            //var query3 = entidades.ACREDITAVINCULOFAMILIARs.Select(avf => new { avf.idacreditavinculofamiliar, avf.descripcion }).OrderBy(avf => avf.idacreditavinculofamiliar);
            //ViewData["idacreditavinculofamiliar"] = new SelectList(query3.AsEnumerable(), "idacreditavinculofamiliar", "descripcion", ederechoh.idacreditavinculofamiliar);
            string strResponse = null;
            try
            {
                string discapacidad = Convert.ToString(Request.Params["Discapacidad"]);
                string estudiando = Convert.ToString(Request.Params["Estudiando"]);

                bool bdisc = false;
                bool bestu = false;

                try
                {
                    bdisc = Convert.ToBoolean(discapacidad);
                    bestu = Convert.ToBoolean(estudiando);

                    ederechoh.Discapacidad = bdisc;
                    ederechoh.Estudiando = bestu;
                }
                catch
                {
                    strResponse = "{success: false,msg:'Error Validacion de formulario'}";
                    return Content(strResponse);
                }
                // TODO: Add update logic here
                //if (ModelState.IsValid)
                //{
                    TryUpdateModel(ederechoh);
                    entidades.SaveChanges();

                    string grupos = "";//Archivogs.FileName.ToString();

                    if (adjunto != null)
                    {
                        grupos = adjunto.FileName.ToString();
                        if (grupos.EndsWith(".pdf") || grupos.EndsWith(".PDF"))
                        {
                            adjunto.SaveAs(Server.MapPath("~/Content/RRHH/Vinculofamiliar/Alta/") + Convert.ToString(ederechoh.IdDerechoHabiente) + ".pdf");
                        }
                    }
                    //return Content("OK");
                    strResponse = "{success: true,msg:'Registro Creado Correctamente'}";
                    return Content(strResponse);

                //}
                //return View(ederechoh);
            }
            catch
            {
                 strResponse = "{success: false,msg:'Error Servidor'}";
                 return Content(strResponse);
                //return View();
            }
        }

        //
        //Accion para dar de baja al derecho habiente 
        public ActionResult Baja(int id)
        {
            var bderechoh = entidades.DERECHOHABIENTEs.Single(p => p.IdDerechoHabiente == id);

            var query = entidades.BAJADERECHOHABIENTEs.Select(bdh => new { bdh.idbajaderechohabiente, bdh.descripcion }).OrderBy(bdh => bdh.idbajaderechohabiente);
            ViewData["idbajaderechohabiente"] = new SelectList(query.AsEnumerable(), "idbajaderechohabiente", "descripcion");

            return View(bderechoh);
        }

        [HttpPost]
        public ActionResult Baja(int id, FormCollection collection, HttpPostedFileBase adjunto)
        {
            var bderechoh = entidades.DERECHOHABIENTEs.Single(p => p.IdDerechoHabiente == id);

            var query = entidades.BAJADERECHOHABIENTEs.Select(bdh => new { bdh.idbajaderechohabiente, bdh.descripcion }).OrderBy(bdh => bdh.idbajaderechohabiente);
            ViewData["idbajaderechohabiente"] = new SelectList(query.AsEnumerable(), "idbajaderechohabiente", "descripcion");

            try
            {
                // TODO: Add delete logic here
                bderechoh.Estado = 0;
                TryUpdateModel(bderechoh);
                entidades.SaveChanges();

                string grupos = "";//Archivogs.FileName.ToString();

                if (adjunto != null)
                {
                    grupos = adjunto.FileName.ToString();
                    if (grupos.EndsWith(".pdf") || grupos.EndsWith(".PDF"))
                    {
                        adjunto.SaveAs(Server.MapPath("~/Content/RRHH/Vinculofamiliar/Baja/") + Convert.ToString(bderechoh.IdDerechoHabiente) + ".pdf");
                    }
                }

                return Content("OK");
            }
            catch
            {
                return View(bderechoh);
            }
        }
        //
        // GET: /derechohabiente/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /derechohabiente/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            string strResponse = String.Empty;
            var ehabiente = entidades.DERECHOHABIENTEs.Single(e => e.IdDerechoHabiente == id);

            try
            {
                if (ehabiente != null)
                {
                   entidades.DERECHOHABIENTEs.DeleteObject(ehabiente);
                   entidades.SaveChanges();
                    return Content("OK");
                }
                return Content("Error");
            }
            catch (Exception e)
            {
                strResponse = "{success: false,msg:'" + e.Message + "'}";
                return Content(strResponse);
            }
        }
        public ActionResult Reportdv()
        {
            string idPersona = Request.QueryString["IdEjercicioMes"]; 
                LocalReport localReport = new LocalReport();
                localReport.ReportPath = Server.MapPath("~/Content/Reportes/RHListaDerechoHabientePorPersona.rdlc");
                ReportDataSource reportDataSource = new ReportDataSource("DataSet1", entidades.RHListaDerechoHabientePorPersona(Int32.Parse(idPersona)));
                localReport.DataSources.Add(reportDataSource);
                string reportType = "EXCEL";
                string mimeType = "application/vnd.ms-excel";
                string encoding;
                string fileNameExtension = "xls";
                String deviceInfo = "";
                Warning[] warnings;
                string[] streams;
                byte[] renderedBytes;
                renderedBytes = localReport.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
                Response.Clear();
                Response.ContentType = mimeType;
                Response.AddHeader("content-disposition", "attachment; filename=ReporteHabiente.xls");
                Response.BinaryWrite(renderedBytes);
                Response.End();
                return File(renderedBytes, mimeType);
        }
        public ActionResult ReportdvALL()
        {
         
            LocalReport localReport = new LocalReport();
            localReport.ReportPath = Server.MapPath("~/Content/Reportes/RHListaDerechoHabiente.rdlc");
            ReportDataSource reportDataSource = new ReportDataSource("DataSet1", entidades.RHListaDerechoHabiente());
            localReport.DataSources.Add(reportDataSource);
            string reportType = "EXCEL";
            string mimeType = "application/vnd.ms-excel";
            string encoding;
            string fileNameExtension = "xls";
            String deviceInfo = "";
            Warning[] warnings;
            string[] streams;
            byte[] renderedBytes;
            renderedBytes = localReport.Render(
                reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warnings);
            Response.Clear();
            Response.ContentType = mimeType;
            Response.AddHeader("content-disposition", "attachment; filename=ReporteAllHabiente.xls");
            Response.BinaryWrite(renderedBytes);
            Response.End();
            return File(renderedBytes, mimeType);
        }
    }
}
